home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / smaltalk / manchest.lha / MANCHESTER / manchester / 2.2 / ctl-shift-d=2.2.st < prev    next >
Text File  |  1993-07-24  |  2KB  |  77 lines

  1. "    NAME        ctl-shift-d=2.2
  2.     AUTHOR        miw@cs.man.ac.uk
  3.     FUNCTION binds screendump function to ctl-shift-d
  4.     ST-VERSIONS    2.2
  5.     PREREQUISITES     
  6.     CONFLICTS    
  7.     DISTRIBUTION      world
  8.     VERSION        1.1
  9.     DATE    22 Jan 1989
  10. SUMMARY    ctl-shift-d binds a screendump function to the ctl-shift-d sequence. 
  11.   This can be activated at any time (eg even when a menu is active)
  12.   Needs screendump.st.  MIW
  13. "!
  14. 'From Smalltalk-80, Version 2.2 of July 4, 1987 on 8 September 1987 at 9:03:11 am'!
  15.  
  16. InputState addClassVarName: 'ScreenDumpKey'!
  17.  
  18. !InputState methodsFor: 'private'!
  19.  
  20. keyAt: keyNumber put: value
  21.     | index mask |
  22.     index _ keyNumber bitAnd: 255. "Get rid of meta bits"
  23.     (index < BitMin or: [index > OtherMeta3])
  24.       ifTrue:  "Not a potential special character"
  25.         [value = 1 ifTrue: "only look at down strokes"
  26.             [index = InterruptKey
  27.                 ifTrue: [(lshiftState ~= 0 or: [(keyNumber bitAnd: 16r100) ~= 0])
  28.                             ifTrue: [self forkEmergencyEvaluatorAt: Processor userInterruptPriority]
  29.                             ifFalse: [[ScheduledControllers interruptName: 'User Interrupt'] fork]]
  30.                 ifFalse: [index = EmergencyInterruptKey
  31.                             ifTrue: [self forkEmergencyEvaluatorAt: Processor userInterruptPriority]
  32.                             ifFalse: [index = ScreenDumpKey
  33.                                         ifTrue: [[self doScreenDump] forkAt: Processor userInterruptPriority]
  34.                                         ifFalse: [^keyboardQueue
  35.                                                     nextPut: (KeyboardEvent
  36.                                                                 code: index
  37.                                                                 meta: (metaState bitOr: (keyNumber bitShift: -8)))]]]]]
  38.       ifFalse: [self setStateFor: index with: value.
  39.             metaState _ (((((ctrlState bitOr: (lshiftState bitOr: rshiftState)) bitOr: lockState) bitOr: metaKeyState)
  40.                                 bitOr: otherMetaKey1State) bitOr: otherMetaKey2State) bitOr: otherMetaKey3State]! !
  41.  
  42.  
  43. !InputState class methodsFor: 'class initialization'!
  44.  
  45. initialize
  46.     "Define parameters"
  47.  
  48.     "InputState initialize"
  49.  
  50.     InterruptKey     _ 3.
  51.     EmergencyInterruptKey _ 227.
  52.     ScreenDumpKey _ 228.
  53.     BitMin _ 128.  "Min mouse/keyset bit code"
  54.     BitMax _ 135.  "Max mouse/keyset bit code"
  55.     LshiftKey _ 136.
  56.     RshiftKey _ 137.
  57.     CtrlKey _ 138.
  58.     LockKey _ 139.
  59.     MetaKey _ 140.
  60.     OtherMeta1 _ 141.
  61.     OtherMeta2 _ 142.
  62.     OtherMeta3 _ 143! !
  63.  
  64. !InputState class methodsFor: 'key settings'!
  65.  
  66. screenDumpKey
  67.     "Answer the code for the key that starts an interactive screen dump"
  68.  
  69.     ^ScreenDumpKey!
  70.  
  71. screenDumpKey: anInteger
  72.     "Set the code for the key that starts an interactive screen dump."
  73.  
  74.     ScreenDumpKey _ anInteger! !
  75. InputState initialize!
  76.  
  77.